Wprowadzenie
Na zmiennych i stałych (lub bezpośrednio na wartościach) możemy wykonywać różne operacje matematyczne i logiczne.
Operatory arytmetyczne
| Operator | Opis |
|---|---|
a = b + c; |
dodawanie |
a = b – c; |
odejmowanie |
a = b * c; |
mnożenie |
a = b / c; |
dzielenie |
a = 10 % 4; |
modulo (reszta z dzielenia) |
a = b ** c; |
podniesienie do potęgi (b do potęgi c) |
++a; |
inkrementacja (zwiększenie o 1) w tej samej linii kodu |
a++; |
inkrementacja (zwiększenie o 1) w następnej linii kodu |
--a; |
dekrementacja (zmniejszenie o 1) w tej samej linii kodu |
a--; |
dekrementacja (zmniejszenie o 1) w następnej linii kodu |
Tak jak w matematyce, możemy w JS używać nawiasów, aby zmodyfikować kolejność wykonywanych działań:
console.log( 2 + (3 * 2) ); // 8
console.log( (2 + 3) * 2 ); // 10Przykłady
let margin = 0;
// zwiększamy wartość zmiennej o 1
margin++;
console.log('margin after ++ is:', margin); // margin after ++ is: 1
// zwiększamy wartość zmiennej o 1 w wyrażeniu za pomocą końcówki ++
console.log('margin with ++ suffix is:', margin++); // margin with ++ suffix is: 1
// wartość najpierw została odczytana (1), a dopiero potem zwiększona (teraz wynosi 2)
console.log('margin after ++ is:', margin); // margin after ++ is: 2
// zmniejszamy wartość o 1
margin--;
console.log('margin after -- is:', margin); // margin after -- is: 1
// zwiększamy wartość zmiennej o 1 w wyrażeniu za pomocą przedrostka ++
console.log('margin with ++ prefix is:', ++margin); // margin with ++ prefix is: 2
// wartość nie zmienia się po powyższej linii
console.log('margin after ++ is:', margin); // margin after ++ is: 2Operatory przypisania
| Operator | Przykład | Równoznaczne z |
|---|---|---|
= |
a = b |
a = b |
+= |
a += b |
a = a + b |
-= |
a -= b |
a = a - b |
*= |
a *= b |
a = a * b |
/= |
a /= b |
a = a / b |
%= |
a %= b |
a = a % b |
Przykłady
let margin = 3;
// dodajemy liczbę do zmiennej
margin += 7;
// taki zapis jest równoznaczny z:
// margin = margin + 7;
console.log('margin after += 7 is:', margin); // margin after += 7 is: 10
// teksty możemy łączyć również za pomocą operatora +=
margin += 'px';
console.log('margin after += px is:', margin); // margin after += px is: 10pxOperatory porównania
| Operator | Opis |
|---|---|
== |
równa wartość |
=== |
równa wartość i typ danych |
!= |
różne wartości |
!== |
różne wartości i typy danych |
> |
większe niż |
< |
mniejsze niż |
>= |
większe lub równe |
<= |
mniejsze lub równe |
Operatory logiczne
| Operator | Opis |
|---|---|
&& |
i (and) |
|| |
lub (or) |
^ |
jeden z, ale nie oba naraz (xor) |
! |
negacja (not) |
Więcej informacji o negacjach
Zobaczmy działanie negacji w praktyce:
let size = 1;
// porównujemy za pomocą PODWÓJNEGO znaku równości
if(size == 1){
console.log('size is 1');
}
// sprawdzamy czy wartości są różne od siebie
if(size != 7){
console.log('size is NOT 7');
}
// negujemy warunek za pomocą wykrzyknika
if(!(size == 7)){
console.log('NOT true, that size is 7');
}Jak widzisz, wykrzyknij ! oznacza negację. W przypadku porównywania dwóch wartości będziemy używać !=, ale negacja przyda nam się też w innych przypadkach:
let gameStarted = true;
let gameEnded = false;
if(gameStarted){
console.log('gameStarted is true');
}
if(!gameEnded){
console.log('NOT true, that gameEnded is true');
}Z powyższego przykładu dowiadujemy się, że w JS istnieją wartości true i false. Kiedy używamy ich jako warunku, nie musimy pisać gameStarted == true.
Operator warunkowy
Znany również jako operator trójczłonowy (conditional/ternary operator), potocznie nazywany często "krótkim ifem" (short if), służy zwykle do przypisywania zmiennej/stałej wartości zależnej od jakiegoś warunku.
Składnia
condition ? valueIfTrue : valueIfFalseWięcej informacji
W standardowym zastosowaniu bloku if moglibyśmy zapisać:
const points = 7;
let result;
if(points > 5){
result = 'win';
} else {
result = 'loose';
}
console.log(result);Short if pozwoli nam znacznie skrócić ten fragment kodu:
const points = 7;
const result = points > 5 ? 'win' : 'loose';
console.log(result);Dodatkowo, powyższy przykład pokazuje, że operator warunkowy pozwala na użycie warunku do przypisania wartości stałej const. Byłoby to niemożliwe przy zastosowaniu if...else.
Działania matematyczne
JavaScript udostępnia obiekt Math(), dzięki któremu z łatwością możemy przeprowadzać bardziej złożone operacje matematyczne.
| Funkcja | Opis |
|---|---|
Math.round(a) |
zaokrąglenie standardowe – mniejsze od 0.5 w dół, a 0.5 i większe w górę |
Math.ceil(a) |
zaokrąglenie w górę |
Math.floor(a) |
zaokrąglenie w dół |
Math.pow(a,b); |
potęgowanie – a do potęgi b |
Math.sqrt(a); |
pierwiastek kwadratowy z a |
Math.min(a, b, c); |
najmniejsza z podanych wartości |
Math.max(a, b, c); |
największa z podanych wartości |
Math.random(); |
losowa liczba z przedziału od 0 do 1 (bez 1, czyli od 0 do 0.999...) |
Powyższe działania można łączyć ze sobą, np. aby uzyskać losową liczbę całkowitą z przedziału od 1 do 10:
const randomNumber = Math.floor(Math.random() * 10) + 1;